package modelo;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


public class IngredienteDAO {

	public IngredienteDAO() {
		super();
	}
	public int tamañoTabla(){
		String tiraSQL = "select count(*) as num from ingredientes";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		int tam= 0;
		try {
			while(resultSet.next()){
				tam = resultSet.getInt("num");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return tam;
	}
	public void registrarIngrediente(Ingrediente ingrediente){
		String tiraSQL=	"INSERT INTO ingredientes "+
		 "(nombre,unidadMedicion,existencia,stockMin,stockMax) VALUES "+
			 "('"+ingrediente.getNombre()+"','"+ingrediente.getUnidaddeMedida()+"','"+ingrediente.getCantidad()+"','"+ingrediente.getStockmin()+"','"+ingrediente.getStockmax()+"')";
	
		Conexion.ejecutar(tiraSQL);
	}
	public void actualizarIngrediente(Ingrediente I){
	String tiraSQL = "update ingredientes set nombre='"+I.getNombre()+"',unidadmedicion='"+I.getUnidaddeMedida()+"'," +
			"existencia='"+I.getExistencia()+"',stockmin='"+I.getStockmin()+"',stockmax='"+I.getStockmax()+"' where (codi='"+I.getCodI()+"')"; 
		Conexion.ejecutar(tiraSQL);
	}
	public void eliminarIngrediente(Ingrediente I){
		String tiraSQL = "delete from ingredientes where(codi='"+I.getCodI()+"')";
		Conexion.ejecutar(tiraSQL);
	}
	public Ingrediente buscarIngredientePorNombre(String valor){
		String tiraSQL="select * from ingredientes where (estatus='A' and nombre='"+valor+"')";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		Ingrediente ingrediente = null;
		try {
			 while (resultSet.next()){
				ingrediente = new Ingrediente();
				ingrediente.setCodI(resultSet.getInt("codi"));
				ingrediente.setEstatus(resultSet.getString("estatus"));
				ingrediente.setExistencia(new Float(resultSet.getString("existencia")));
				ingrediente.setNombre(resultSet.getString("nombre"));
				ingrediente.setStockmax(new Float(resultSet.getString("stockmax")));
				ingrediente.setStockmin(new Float(resultSet.getString("stockmin")));
				ingrediente.setUnidaddeMedida(resultSet.getString("unidadmedicion"));
			}
		}catch(SQLException e){
			e.printStackTrace();			
		}
		return ingrediente;
	}
	public Ingrediente buscarIngredientePorCodigo(int valor){
		String tiraSQL="select * from ingredientes where (estatus = 'A' and codi='"+valor+"')";
		ResultSet resultSet = Conexion.consultar(tiraSQL);
		Ingrediente ingrediente = null;
		try {
			 while (resultSet.next()){
				ingrediente = new Ingrediente();
				ingrediente.setCodI(resultSet.getInt("codi"));
				ingrediente.setEstatus(resultSet.getString("estatus"));
				ingrediente.setExistencia(new Float(resultSet.getString("existencia")));
				ingrediente.setNombre(resultSet.getString("nombre"));
				ingrediente.setStockmax(new Float(resultSet.getString("stockmax")));
				ingrediente.setStockmin(new Float(resultSet.getString("stockmin")));
				ingrediente.setUnidaddeMedida(resultSet.getString("unidadmedicion"));
			}
		}catch(SQLException e){
			e.printStackTrace();
			
		}
		return ingrediente;
	}
	public List<Ingrediente> consultarIngredientes() {
		List<Ingrediente> ingredientes = new ArrayList<Ingrediente>();
		String tiraSQL = "select * from ingredientes";
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				int codI = resultSet.getInt("codi");
				String nombre = resultSet.getString("nombre");
				String unidadMedicion = resultSet.getString("unidadmedicion");
				float existencia = new Float(resultSet.getString("existencia"));
				String estatus = resultSet.getString("estatus");
				float stockMin = new Float(resultSet.getString("stockmin"));
				float stockMax = new Float(resultSet.getString("stockmax"));
				Ingrediente ingrediente = new Ingrediente();
				ingrediente.setCodI(codI);
				ingrediente.setNombre(nombre);
				ingrediente.setUnidaddeMedida(unidadMedicion);
				ingrediente.setEstatus(estatus);
				ingrediente.setStockmin(stockMin);
				ingrediente.setStockmax(stockMax);
				ingrediente.setExistencia(existencia);
				ingredientes.add(ingrediente);
			}
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return ingredientes;
	}
	public List<Ingrediente> consultarIngredientesCondicion(String tira) {
		List<Ingrediente> ingredientes = new ArrayList<Ingrediente>();
		String tiraSQL = tira;
		ResultSet resultSet = Conexion.consultar(tiraSQL);		
		try {
			while (resultSet.next()) {
				int codI = resultSet.getInt("codi");
				String nombre = resultSet.getString("nombre");
				String unidadMedicion = resultSet.getString("unidadmedicion");
				float existencia = new Float(resultSet.getString("existencia"));
				String estatus = resultSet.getString("estatus");
				float stockMin = new Float(resultSet.getString("stockmin"));
				float stockMax = new Float(resultSet.getString("stockmax"));
				Ingrediente ingrediente = new Ingrediente();
				ingrediente.setCodI(codI);
				ingrediente.setNombre(nombre);
				ingrediente.setUnidaddeMedida(unidadMedicion);
				ingrediente.setEstatus(estatus);
				ingrediente.setStockmin(stockMin);
				ingrediente.setStockmax(stockMax);
				ingrediente.setExistencia(existencia);
				ingredientes.add(ingrediente);
			}
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return ingredientes;
	}
}
